tg-me.com/csharpproglib/5858
Last Update:
📋 Чек-лист по написанию LINQ запросов
Независимо от того, работаете ли вы с коллекциями, базами данных или XML, LINQ запросы требуют правильной структуры и оптимизации для достижения наилучших результатов.
В этом чек-листе собраны основные моменты, которые помогут вам писать чистые, читаемые и эффективные LINQ запросы.
Убедитесь, что данные поддерживают LINQ, например, IEnumerable<T>
или IQueryable<T>
.
Чётко определите входные данные, что с ними будет в процессе и какие ожидаются данные на выходе.
Перед написанием запросов стоит определить какой синтаксис будет использоваться.
• Синтаксис как метод:
var result = collection.Where(x => x.Age > 30).OrderBy(x => x.Name).ToList();
• Запрос в синтаксисе:
var result = from x in collection
where x.Age > 30
orderby x.Name
select x;
Используйте
IQueryable<T>
для внешних источников данных (например, базы данных), чтобы запрос выполнялся на сервере.Отложенная загрузка полезна, когда вам нужно выполнить запрос, но выполнение следует отложить до тех пор, пока это не потребуется.
Немедленная загрузка используется, когда вы хотите сразу получить результат выполнения запроса или когда данные нужно обработать немедленно.
Используйте функции агрегации, такие как
Sum()
, Average()
, Max()
, и группировку через GroupBy()
.Работайте с несколькими коллекциями через операторы
join
, union
, intersect
и except
.var combined = collection1.Join(collection2,
c1 => c1.Id,
c2 => c2.Id,
(c1, c2) => new { c1.Name, c2.Price });
let
для промежуточных вычисленийУпрощайте запросы с помощью промежуточных переменных:
var result = from x in collection
let temp = x.Age * 2
where temp > 40
select new { x.Name, temp };
Используйте
DefaultIfEmpty()
для предотвращения ошибок при работе с пустыми коллекциями.Используйте асинхронные методы, такие как
ToListAsync()
, для работы с асинхронными источниками данных.